﻿/**********************************************************************
 * @file   PostGraphWidgetCylinder.h
 * @brief  VTK圆柱界面
 * @author BaGuijun (baguijun@163.com)
 * @date   2024-10-09
 *********************************************************************/
#ifndef _PostGraphWidgetCylinder_H_
#define _PostGraphWidgetCylinder_H_

#include <QObject>
#include "PostGraphAdaptorAPI.h"

class vtkImplicitCylinderWidget;
class vtkImplicitCylinderRepresentation;

namespace Interface
{
    class PostGraphWidgetCylinderCallBack;
    /**
     * @brief  VTK线界面
     * @author BaGuijun (baguijun@163.com)
     * @date   2024-10-09
     */
    class PostGraphAdaptorAPI PostGraphWidgetCylinder : public QObject
    {
        Q_OBJECT;
    public:
        /**
         * @brief    构造函数
         * @param[i] widget 父界面
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-10-09
         */
        PostGraphWidgetCylinder(QWidget* widget);
        /**
         * @brief    析构函数
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-10-09
         */
        ~PostGraphWidgetCylinder();
        /**
         * @brief    设置边界
         * @param[i] bounds           边界[6]
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-09-18
         */
        void setBounds(double* bounds);
        /**
         * @brief    设置圆柱位置
         * @param[i] center      中心点[3]
         * @param[i] axis        方向[3]
         * @param[i] radius      半径
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-10-11
         */
        void setValue(double* center, double* axis, double radius);
        /**
         * @brief    设置是否显示
         * @param[i] isShow           是否显示
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-09-18
         */
        void setIsShow(bool isShow);
    signals:
        ;
        /**
         * @brief    数据更改
         * @param[i] center      中心点[3]
         * @param[i] axis        方向[3]
         * @param[i] radius      半径
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-10-11
         */
        void sigValueChange(double* center, double* axis, double radius);
    private:
        /**
         * @brief  VTK圆柱界面
         * @author BaGuijun (baguijun@163.com)
         * @date   2024-09-18
         */
        vtkImplicitCylinderWidget* _widget = nullptr;
        /**
         * @brief  代理
         * @author BaGuijun (baguijun@163.com)
         * @date   2024-10-11
         */
        vtkImplicitCylinderRepresentation* _representation = nullptr;
        /**
         * @brief  回调
         * @author BaGuijun (baguijun@163.com)
         * @date   2024-09-18
         */
        PostGraphWidgetCylinderCallBack* _callBack = nullptr;
    };
}

#endif